﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SIIV.Data;

namespace SIIV.Business
{
    public class AnalisisBusiness
    {
        public enum EstadosDeAnalisis { Inicial = 1, Procesándose = 2, Finalizado = 3 }

        public void ActualizarAnalisis(int idAnalisis, short idTipoDeAnalisis, short idEstado, string observaciones, int idUsuario)
        {
            using (SIIVDataModel model = new SIIVDataModel())
            {
                Analisis analisis = model.Analisis1.Single(a => a.IdAnalisis.Equals(idAnalisis));
                analisis.IdTipoDeAnalisis = idTipoDeAnalisis;
                analisis.IdEstadoDeAnalisis = idEstado;

                analisis.HistoriasDeAnalisis.Add(new HistoriaDeAnalisis()
                {
                    Descripcion = observaciones,
                    Fecha = DateTime.Now,
                    IdUsuario = idUsuario
                });

                model.SaveChanges();
            }
        }

        public List<Analisis> ObtenerAnalisis(int idVeterinario, int? idAnimal)
        {
            using (SIIVDataModel model = new SIIVDataModel())
            {
                return model.Analisis1.
                    Include("TipoDeAnalisis").
                    Include("EstadoDeAnalisis").
                    Include("HistoriasDeAnalisis").
                    Include("ResultadosDeAnalisis").
                    Include("Muestra").
                    Include("Muestra.Protocolo").
                    Include("Muestra.Animal").
                    Include("Muestra.Animal.Campo").
                    Include("Muestra.TiposDeMuestra").
                    Where(a => a.Muestra.IdAnimal.Equals(idAnimal.HasValue ? idAnimal.Value : a.Muestra.IdAnimal) && a.Muestra.Animal.IdVeterinario.Equals(idVeterinario) && !a.Muestra.Animal.IdEstadoAnimal.Equals(3)).OrderByDescending(a => a.Fecha).ToList();
            }
        }
    }
}
